@echo off
goto main

:main
set intName=config.aspnmy
goto getInt

@pause


:getInt

::引用外部文件中的变量
for /f "delims=" %%a in (%intName%) do %%a

    CLS
    ECHO =============================
    echo 读取配置文件成功
    echo 1、第一个配置类型是%int1%文件
    echo 2、第一个配置类型是%int2%文件
    echo 3、目前暂时只支持2个类型的文件注册
    echo 4、按任意键进入运行下一步
    ECHO =============================
@pause
goto getSlist
@exit

:getDllNames

REM 用于获取当前目录下所有符合要求的文件名保存成json文件

@echo off
REM 获取当前目录下指定条件的文件格式，并导出成slist.json文件
for /r %cd% %%i in (*.dll) do (
     ECHO %%i > slist_dll.json
)
echo dll文件遍历成功
goto getSlist
@exit

:getOcxNames

REM 用于获取当前目录下所有符合要求的文件名保存成json文件

@echo off
REM 获取当前目录下指定条件的文件格式，并导出成slist.json文件
for /r %cd% %%i in (*.ocx) do (
     ECHO %%i > slist_ocx.json
)
echo exo文件遍历成功
goto getSlist
@exit

:getSlist
REM 用于获取合法的slist.json文件
@IF NOT EXIST *.json (goto choisFor ) else ( goto goRun )

:choisFor
    CLS
    ECHO =============================
    echo 缺少合法的可注册的控件文件，按照以下提示进一步操作：
    echo 1、需要注册dll类文件。请输入1并按回车键
    echo 2、需要注册ocx类文件。请输入2并按回车键
    echo 3、清理无效的json配置文件并重启本程序。请输入3并按回车键
    echo 4、回到上一步请输入4并按回车键
    echo 5、退出程序请输入5并按回车键
    ECHO =============================

    @set /p input=请输入正确的命令并按回车键:
    @if "%input%"=="1" goto getDllNames
    @if "%input%"=="2" goto getOcxNames
    @if "%input%"=="3" goto jsonCls
    @if "%input%"=="4" goto main
    @if "%input%"=="5" goto exitAll

    @if not "%input%"=="1" (if not %input%=="2" (if not %input%=="3" (if not %input%=="4" (if not %input%=="5"  goto errorText))))

    @pause

:jsonCls
 CLS
    ECHO =============================
    echo 开始清理无效json文件：
    echo ######15%
    echo ##########40%
    echo ###############80%
    echo #######################100%
    echo 清理成功
    ECHO =============================

@IF EXIST *.json del /Q *.json
@pause
goto main
@pause

:errorText
CLS
ECHO =============================
echo 输入的命令编号不正确，请输入正确的命令编号
echo 1、重新开始阅读帮助文件，请输入1并按回车键
echo 2、重新进入本程序启动入口，请输入2并按回车键
echo 3、退出程序请输入3并按回车键
ECHO =============================
@set /p input=请输入正确的命令并按回车键:

@if "%input%"=="1" goto help
@if "%input%"=="2" goto runStart
@if "%input%"=="3" goto exitAll

@if not %input%=="1" (if not %input%=="2" (if not %input%=="3" goto errorText))

@pause

:goRun
CLS
ECHO =============================
echo 0、重启本程序，请输入0并按回车键
echo 1、开始注册控件，请输入1并按回车键
echo 2、清除json配置文件并重启本程序，请输入2并按回车键
echo 3、退出程序请输入3并按回车键
ECHO =============================
@set /p input=请输入正确的命令并按回车键:

@if "%input%"=="0" goto main
@if "%input%"=="1" goto runStart
@if "%input%"=="2" goto jsonCls
@if "%input%"=="3" goto exitAll

@if not %input%=="0" (if not %input%=="1" (if not %input%=="2" (if not %input%=="3" goto errorText)))
@pause

:runStart
cls
ECHO =============================
echo 开始初始化注册环境,请先退出所有的杀毒软件，
echo 如果注册失败，请将本目录中除了本文件以外的文件以管理员权限复制到C:\Windows\SysWOW64\ 和C:\Windows\System32\下
echo 再根据README文件提示，以管理员权限打开cmd，手工输入注册命令
echo 复制成功以后，按任意键进入下一步
ECHO =============================

@SET var1=aspnmyTMP

@IF NOT EXIST %USERPROFILE%\%var1% MKDIR %USERPROFILE%\%var1%

@SETX  %var1% %USERPROFILE%\%var1%

goto chiose


:chiose

if exist %windir%\SysWOW64 ( goto 64_meun )else (goto 32_meun)

@pause

:64_meun
cls
ECHO =============================
echo 检测到本机系统为64位系统，
echo 0、输入0并按回车键，进入菜单界面
echo 1、输入1并按回车键，直接进入64位系统控件安装程序
echo 5、退出程序请输入5并按回车键
echo 6、阅读手工注册帮助文件请输入6并按回车键
ECHO =============================
@set /p input=请输入正确的命令并按回车键:
@if "%input%"=="0" goto meun
@if "%input%"=="1" goto x64_resvr
@if "%input%"=="5" goto exitAll
@if "%input%"=="6" goto help
@if not "%input%"=="0" (if not %input%=="1" (if not %input%=="5" (if not %input%=="6"  goto errorText)))
@pause

:32_meun
cls
ECHO =============================
echo 检测到本机系统为32位系统，
echo 1、输入0并按回车键，进入菜单界面
echo 2、输入1并按回车键，直接进入32位系统控件安装程序
echo 5、退出程序请输入5并按回车键
echo 6、阅读手工注册帮助文件请输入6并按回车键
ECHO =============================
@set /p input=请输入正确的命令并按回车键:
@if "%input%"=="0" goto meun
@if "%input%"=="1" goto x32_resvr
@if "%input%"=="5" goto exitAll
@if "%input%"=="6" goto help
@if not "%input%"=="0" (if not %input%=="1" (if not %input%=="5" (if not %input%=="6"  goto errorText)))

:meun

CLS
ECHO =============================
echo 开始自动脚本形式注册控件，请确保浏览器和杀毒软件、防火墙全部已经退出
echo 1、系统为Win7/Win10/Vista/XP的32位系统，请输入1并按回车键
echo 2、系统为Win7/Win10/Vista的64位系统，请输入2并按回车键
echo 3、清除所有注册的控件，便于重新注册，请输入3并按回车键
echo 4、初始环境清理，便于重新注册，请输入4并按回车键
echo 5、退出程序请输入5并按回车键
echo 6、阅读手工注册帮助文件请输入6并按回车键
echo 0、回到菜单页面请输入0并按回车键
ECHO =============================

@set /p input=请输入正确的命令并按回车键:
@if "%input%"=="1" goto x32_resvr
@if "%input%"=="2" goto x64_resvr
@if "%input%"=="3" goto x64x86_delsvr
@if "%input%"=="4" goto clsAll
@if "%input%"=="5" goto exitAll
@if "%input%"=="6" goto help
@if "%input%"=="0" goto meun
@if not "%input%"=="1" (if not %input%=="2" (if not %input%=="3" (if not %input%=="4" (if not %input%=="5" (if not %input%=="help" (if not %input%=="0"  goto errorText))))))


:x32_resvr
echo 开始注册

@IF NOT EXIST %USERPROFILE%\%var1% MKDIR %USERPROFILE%\%var1%
@SETX  %var1% %USERPROFILE%\%var1%

@copy %~dp0*.ocx %aspnmyTMP%
@copy %~dp0*.dll %aspnmyTMP%
@copy %aspnmyTMP%\*.* %windir%\System32\

@%windir%\System32\regsvr32.exe %windir%\System32\ActiveXEdit.ocx /s
@%windir%\System32\regsvr32.exe %windir%\System32\FTCOM.dll /s
@IF EXIST %aspnmyTMP% del /Q %aspnmyTMP%
ECHO =====================================
echo 成功注册32位控件，请重新启动计算机
echo 如需注册其他类型文件请重新启动本程序
ECHO =====================================
@wmic ENVIRONMENT where "name='%var1%'" delete
@pause
@exit

:x64_resvr

echo 开始注册

@IF NOT EXIST %USERPROFILE%\%var1% MKDIR %USERPROFILE%\%var1%
@SETX  %var1% %USERPROFILE%\%var1%

@copy %~dp0*.ocx %aspnmyTMP%
@copy %~dp0*.dll %aspnmyTMP%
@copy %aspnmyTMP%\*.* %windir%\System32\
@copy %aspnmyTMP%\*.* %windir%\SysWOW64\

@%windir%\System32\regsvr32.exe %windir%\System32\ActiveXEdit.ocx /s
@%windir%\System32\regsvr32.exe %windir%\System32\FTCOM.dll /s
@%windir%\SysWOW64\regsvr32.exe %windir%\SysWOW64\ActiveXEdit.ocx /s
@%windir%\SysWOW64\regsvr32.exe %windir%\SysWOW64\FTCOM.dll /s

@IF EXIST %aspnmyTMP% del /Q %aspnmyTMP%
@wmic ENVIRONMENT where "name='%var1%'" delete
ECHO =====================================
echo 成功注册32位控件，请重新启动计算机
echo 如需注册其他类型文件请重新启动本程序
ECHO =====================================
@pause
@exit

:x64x86_delsvr

CLS
ECHO =============================
echo 开始控件清理，请确保浏览器和杀毒软件、防火墙全部已经退出
echo 弹出的窗口界面请按“确定”键
ECHO =============================

@%windir%\System32\regsvr32.exe %windir%\System32\ActiveXEdit.ocx /u
@%windir%\System32\regsvr32.exe %windir%\System32\FTCOM.dll /u
@%windir%\SysWOW64\regsvr32.exe %windir%\SysWOW64\ActiveXEdit.ocx /u
@%windir%\SysWOW64\regsvr32.exe %windir%\SysWOW64\FTCOM.dll /u
@IF EXIST %aspnmyTMP% del /Q %aspnmyTMP%
@IF EXIST %windir%\System32\ActiveXEdit.ocx del /Q %windir%\System32\ActiveXEdit.ocx
@IF EXIST %windir%\System32\FTCOM.dll del /Q %windir%\System32\FTCOM.dll
@IF EXIST %windir%\SysWOW64\ActiveXEdit.ocx del /Q %windir%\SysWOW64\ActiveXEdit.ocx
@IF EXIST %windir%\SysWOW64\FTCOM.dll del /Q %windir%\SysWOW64\FTCOM.dll
@wmic ENVIRONMENT where "name='%var1%'" delete


ECHO =============================
echo 控件清理成功
echo 按任意键重新启动本程序
ECHO =============================

@pause

goto chiose

:clsAll
@IF EXIST %aspnmyTMP% del /Q %aspnmyTMP%
@wmic ENVIRONMENT where "name='%var1%'" delete
@pause
cls
goto chiose

:exitAll
@IF EXIST %aspnmyTMP% del /Q %aspnmyTMP%
@wmic ENVIRONMENT where "name='%var1%'" delete
exit

:help
CLS
ECHO =============================
echo 开始查看纯手工注册控件帮助文档：
echo 1、查看系统为Win7/Win10/Vista/XP的32位系统帮助文件，请输入1并按回车键
echo 2、查看系统为Win7/Win10/Vista的64位系统帮助文件，请输入2并按回车键
echo 4、回到上一步请输入4并按回车键
echo 5、退出程序请输入5并按回车键
ECHO =============================

@set /p input=请输入正确的命令并按回车键:
@if "%input%"=="1" goto x32_help
@if "%input%"=="2" goto x64_help
@if "%input%"=="3" goto x64x86_delsvr
@if "%input%"=="4" goto clsAll
@if "%input%"=="5" goto exitAll

@if not "%input%"=="1" (if not %input%=="2" (if not %input%=="3" (if not %input%=="4" (if not %input%=="5"  goto errorText))))

@pause


:x32_help
CLS
ECHO =============================
echo 开始纯手工注册控件，请确保浏览器和杀毒软件、防火墙全部已经退出
echo 	系统为Win7/Win10/Vista/XP的32位系统，将本目录下的dll及ocx文件全部复制到C:\Windows\SysWOW64\ 下方
echo  	然后点击开始-运行-输入cmd，以管理员权限打开命令行
echo 	先复制冒号后面的命令输入到命令行并按回车：%windir%\SysWOW64\regsvr32.exe %windir%\SysWOW64\ActiveXEdit.ocx
echo 	注册成功会跳出成功提示
echo 	先复制冒号后面的命令输入到命令行并按回车：%windir%\SysWOW64\regsvr32.exe %windir%\SysWOW64\FTCOM.dll
echo 	注册成功会跳出成功提示
echo 1、回到上一步请输入1并按回车键
echo 2、退出程序请输入2并按回车键
ECHO =============================

@set /p input=请输入正确的命令并按回车键:

@if "%input%"=="1" goto goBack
@if "%input%"=="2" goto exitAll

@if not %input%=="1" (if not %input%=="2"  goto errorText)

@pause


:x64_help
CLS
ECHO =============================
echo 开始纯手工注册控件，请确保浏览器和杀毒软件、防火墙全部已经退出
echo 	系统为Win7/Win10/Vista/XP的32位系统，将本目录下的dll及ocx文件全部复制到C:\Windows\System32\ 下方
echo 	然后点击开始-运行-输入cmd，以管理员权限打开命令行
echo 	先复制冒号后面的命令输入到命令行并按回车：%windir%\System32\regsvr32.exe %windir%\System32\ActiveXEdit.ocx
echo 	注册成功会跳出成功提示
echo 	先复制冒号后面的命令输入到命令行并按回车：%windir%\System32\regsvr32.exe %windir%\System32\FTCOM.dll
echo 	注册成功会跳出成功提示
echo 1、回到上一步请输入1并按回车键
echo 2、退出程序请输入2并按回车键
ECHO =============================

@set /p input=请输入正确的命令并按回车键:

@if "%input%"=="1" goto goBack
@if "%input%"=="2" goto exitAll

@if not %input%=="1" (if not %input%=="2"  goto errorText)

@pause

:goBack
@IF EXIST %aspnmyTMP% del /Q %aspnmyTMP%
@wmic ENVIRONMENT where "name='%var1%'" delete
goto :help
@pause

:errorText
CLS
ECHO =============================
echo 输入的命令编号不正确，请输入正确的命令编号
echo 1、重新开始阅读帮助文件，请输入1并按回车键
echo 2、重新进入本程序启动入口，请输入2并按回车键
echo 3、退出程序请输入4并按回车键
ECHO =============================
@set /p input=请输入正确的命令并按回车键:

@if "%input%"=="1" goto help
@if "%input%"=="2" goto main
@if "%input%"=="3" goto exitAll

@if not %input%=="1" (if not %input%=="2" (if not %input%=="3" goto errorText))

@pause